home *** CD-ROM | disk | FTP | other *** search
/ The Disc - MacWorld 1995 / PowerComputing (The Disc)(MacWorld 1995).ISO / mac / CDFACTOR / HCfactor / HumanCode / HumanCode.DXR / 00055_parent-slider-.ls < prev    next >
Encoding:
Text File  |  1995-07-14  |  3.1 KB  |  106 lines

  1. property minLoc, maxLoc, itemNo, currentNo, spriteNo, slideLocList1, slideLocList2, vertical
  2.  
  3. on birth me, slideRect, spriteNumber
  4.   if getAt(slideRect, 1) = getAt(slideRect, 3) then
  5.     set vertical to 1
  6.     set minLoc to getAt(slideRect, 2)
  7.     set maxLoc to getAt(slideRect, 4)
  8.     set the locH of sprite spriteNo to getAt(slideRect, 1)
  9.   else
  10.     if getAt(slideRect, 2) = getAt(slideRect, 4) then
  11.       set vertical to 0
  12.       set minLoc to getAt(slideRect, 1)
  13.       set maxLoc to getAt(slideRect, 3)
  14.       set the locH of sprite spriteNo to getAt(slideRect, 2)
  15.     else
  16.       exit
  17.     end if
  18.   end if
  19.   set itemNo to EMPTY
  20.   set spriteNo to spriteNumber
  21.   set currentNo to EMPTY
  22.   set slideLocList1 to []
  23.   set slideLocList2 to []
  24.   return me
  25. end
  26.  
  27. on slideListSet me, ItemNumber
  28.   if ItemNumber = 1 then
  29.     set itemNo to 1
  30.   else
  31.     set slideStep to float(maxLoc - minLoc) / (ItemNumber - 1)
  32.     set slideHalfStep to integer(slideStep / 2)
  33.     set slideLocList1 to []
  34.     set slideLocList2 to []
  35.     repeat with n = 1 to ItemNumber - 1
  36.       add(slideLocList1, integer(minLoc + (slideStep * (n - 1))))
  37.       add(slideLocList2, integer(minLoc + (slideStep * (n - 1))) + slideHalfStep)
  38.     end repeat
  39.     add(slideLocList1, maxLoc)
  40.     sort(slideLocList2)
  41.     set itemNo to ItemNumber
  42.   end if
  43. end
  44.  
  45. on slideMouseDown me, mouseDownOperation, mouseUpOperation
  46.   if vertical then
  47.     set theOffset to the locV of sprite spriteNo - getAt(clickLoc(), 2)
  48.     repeat while the stillDown
  49.       set mouseloc to mouseV() + theOffset
  50.       if mouseloc < minLoc then
  51.         set mouseloc to minLoc
  52.       else
  53.         if mouseloc > maxLoc then
  54.           set mouseloc to maxLoc
  55.         end if
  56.       end if
  57.       set the locV of sprite spriteNo to mouseloc
  58.       updateStage()
  59.       add(slideLocList2, mouseloc)
  60.       set currentNo to getPos(slideLocList2, mouseloc)
  61.       deleteAt(slideLocList2, currentNo)
  62.       do(mouseDownOperation)
  63.     end repeat
  64.     if not voidp(currentNo) then
  65.       set the locV of sprite spriteNo to getAt(slideLocList1, currentNo)
  66.       updateStage()
  67.       do(mouseUpOperation)
  68.     end if
  69.   else
  70.     set theOffset to the locH of sprite spriteNo - getAt(clickLoc(), 1)
  71.     repeat while the stillDown
  72.       set mouseloc to mouseH() + theOffset
  73.       if mouseloc < minLoc then
  74.         set mouseloc to minLoc
  75.       else
  76.         if mouseloc > maxLoc then
  77.           set mouseloc to maxLoc
  78.         end if
  79.       end if
  80.       set the locH of sprite spriteNo to mouseloc
  81.       updateStage()
  82.       add(slideLocList2, mouseloc)
  83.       set currentNo to getPos(slideLocList2, mouseloc)
  84.       deleteAt(slideLocList2, currentNo)
  85.       do(mouseDownOperation)
  86.     end repeat
  87.     if not voidp(currentNo) then
  88.       set the locH of sprite spriteNo to getAt(slideLocList1, currentNo)
  89.       updateStage()
  90.       do(mouseUpOperation)
  91.     end if
  92.   end if
  93. end
  94.  
  95. on slideLocSet me, newNo
  96.   if (newNo >= 1) and (newNo <= itemNo) then
  97.     if vertical then
  98.       set the locV of sprite spriteNo to getAt(slideLocList1, newNo)
  99.     else
  100.       set the locH of sprite spriteNo to getAt(slideLocList1, newNo)
  101.     end if
  102.     updateStage()
  103.     set currentNo to newNo
  104.   end if
  105. end
  106.